#define _CRT_SECURE_NO_WARNINGS 1


#include <stdio.h>

//练习1：写一个函数：交换两个变量的值
//void Swap(int* pa, int* pb)//这里不能只写成void Swap (int x, int y)
//因为这只执行了int x = a;  int y = b;  这两句话里面如果交换了x和y，对a和b没有影响
//而传入两个指针，即执行int* pa = &a;  int* pb = &b;  这两句话
//利用解引用操作符，交换这两个指针所指向空间存放的内容，
//就是交换main函数中a和b的值
//当实参传递给形参的时候，形参是实参的一份临时拷贝
//对形参的修改不能改变实参
//{
//	int z = *pa;//
//	*pa = *pb;//
//	*pb = z;//*pa 就是外面的实参a，*pb就是外面的实参b
//}
//int main()
//{
//	int a = 0;//
//	int b = 0;//
//	scanf("%d %d", &a, &b);//
//	printf("交换前：a = %d b = %d", a, b);//
//	Swap(&a, &b);//
//	printf("交换后：a = %d b = %d", a, b);//
//	return 0;//
//}

#include <stdlib.h>
#include <time.h>
#include <stdio.h>

//练习2：
//要求：玩家猜1到100之间的一个随机数，猜错告诉方向，一直到猜对为止
void menu()
{
	printf("猜数字游戏，请选是否开始玩\n");
	printf("**1. play**\n");
	printf("**0. exit**\n");
}
void exitGame(int* g)
{
	printf("\n退出程序请按0\n");
	printf("不退出请输入新的数字\n");
	int n = 0;
	scanf("%d", &n);
	if (n == 0)
	{
		exit(0);
	}
	else
	{
		*g = n;
	}
}
void game()
{
	printf("请猜数字(1到100)\n");
	int guess = 0;	
	int num = rand() % 100 + 1;
	
	while (1)
	{
		if (guess == 0)
		{
			scanf("%d", &guess);
		}
		if (guess < num)
		{
			printf("猜小了\n");
			exitGame(&guess);
		}
		else if (guess > num)
		{
			printf("猜大了\n");
			exitGame(&guess);
		}
		else
		{
			printf("猜对了\n");
			break;
		}
	}
}
int main()
{
	int input = 0;
	srand((unsigned int)time(NULL));
	do
	{
		menu();
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			game();
			break;
		case 0:
			printf("退出程序！\n");
			break;
		default:
			printf("输入错误请重新输入！\n");
			break;
		}
	} while (input);
	return 0;
}
//while的判断是input，保证了只有在以下情况时才会结束程序
//1、玩家手动输入0  2、玩家先输入1，且通过了game子函数，即猜对了随机数
//如果先输入的数字非0非1，则提示输入错误，重新选择：，知道输入这两个数字中一个


#include <windows.h>
#include <string.h>

//练习3：
// int main()
// {
//     char input[20] = { 0 };//
//     system("shutdown -s -t 60");//
// again:
//     printf("请注意，你的电脑将在60秒后关机，如果输入：猪，就取消关机");//
//     scanf("%s", input);//
//     if (strcmp(input, "猪") == 0)
//     {
//         system("shutdown -a");//
//     }
//     else
//     {
//         goto again;//
//     }
//     return 0;//
// }